import { getInfo, login, userInfo } from '@/api/user'
import { resetRouter } from '@/router'
import { getToken, setToken } from '@/utils/auth'

export default {
  namespaced: true,
  state: () => {
    return {
      // 存储token
      // 看先本地是否有token
      token: getToken() || '',
      // 保存用户信息
      userInfo: {}
    }
  },

  mutations: {
    // 设置state里面的token
    setToken(state, newToken) {
      state.token = newToken
      // 插件 持久化token
      setToken(newToken)
    },
    // 设置用户信息
    setUserInfo(state, newUserInfo) {
      state.userInfo = newUserInfo
    }
  },

  actions: {
    // 用户登录请求
    async userLogin(context, obj) {
      const { data: res } = await login(obj)
      context.commit('setToken', res)
    },
    // 获取用户信息
    async getUserInfo(context) {
      // 获取信息1  （有id）
      const { data: res } = await getInfo()
      console.log(res)
      // 获取信息2 （有头像）
      const { data: info } = await userInfo(res.userId)
      // console.log(info)
      context.commit('setUserInfo', { ...res, ...info })
      // 当前用户可以看到的菜单
      return res.roles.menus
    },

    // 用户退出
    logout(context) {
      // 清空token 和 用户信息
      context.commit('setToken', '')
      context.commit('setUserInfo', {})
      // 重置路由
      resetRouter()
    }
  }
}
